1. Technical Field
This disclosure generally relates to data processing, and more specifically relates to the assignment of I/O configuration data in a clustered computer system.
2. Background Art
Since the beginning of the computer age, computer systems have evolved into extremely sophisticated devices that may be found in many different settings. Computer systems typically include a combination of hardware (e.g., semiconductors, circuit boards, etc.) and software (e.g., computer programs). As advances in semiconductor processing and computer architecture push the performance of the computer hardware higher, more sophisticated computer software has evolved to take advantage of the higher performance of the hardware, resulting in computer systems today that are much more powerful than just a few years ago.
One advance in computer systems includes clustering, or the connecting of multiple processors or servers together to cooperatively perform computer tasks as a large, unified computing resource. Clustering increases overall performance of a computing system since multiple processors can often handle a larger number of tasks in parallel than a single processor could. In addition, cluster systems are highly fault-tolerant, since if one system fails, the others keep working, and since clusters can span multiple geographic sites, remote machines will keep working even though an entire site may be lost through a power failure or other disaster.
A clustered computer system includes several different physical enclosures, or nodes, which may be interconnected through a network fabric. For example, one node may include system processors and memory, while other nodes include various different input/output (I/O) devices, such as hard disk drives, networking devices, etc. In known computer systems that include multiple physical enclosures, configuration data, such as bus numbers and other identification data for each enclosure, are written to a non-volatile memory within the enclosure. This allows the system to know what configuration data to assign during initial program load (i.e., boot).
One problem with the known method of storing configuration data in non-volatile memories in a cluster system is the scalability of cluster systems. That is, nodes may be upgraded, repaired, added to, or removed from the cluster. The configuration data in the non-volatile memory in each node will need to be persistent during maintenance and/or reconfiguration in order to be able to operate with the rest of the system and also for the other nodes on the network to remain operational in certain network topologies. The node may be manually reconfigured by a system administrator to recognize the new configuration data, but this could be expensive, and, in some cases, impractical, given the number of nodes that could be added to a cluster. In some cluster systems, an extra copy of the configuration data is stored in a separate non-volatile memory, but as the number of nodes that are added to the cluster system grows, the amount of memory that is needed to store configuration data also grows. One solution to controlling the size of memory in a cluster system is by providing a limited configuration of the nodes on the cluster system. Unfortunately this solution also limits the scalability of a cluster system.
Without a way to assign I/O configuration data in a cluster system that are persistent and can be automatically reassigned after a variety of different types of system reconfiguration and that allows for flexible scalability of the cluster system, the computer industry will continue to suffer from scaling issues within cluster systems.